package github.sf.fw.tools.db;


import github.sf.fw.tools.db.model.ResultRow;
import github.sf.fw.tools.db.model.TableInfo;

import java.util.List;

public interface TableDataWriter {
    /**
     * 写入数据
     *
     * @param tableInfo     需要插入的表信息
     * @param resultRowList 需要插入的数据
     * @return 插入条数
     */
    int writer(TableInfo tableInfo, List<ResultRow> resultRowList);

    void writer(DSConnector dsConnector, TableInfo tableInfo, List<ResultRow> resultRowList);

    /**
     * 批量写
     *
     * @param conn       数据库连接
     * @param tableInfo  表格信息
     * @param resultRows 待插入的结果集
     */
    void batchWrite(Object conn, TableInfo tableInfo, List<ResultRow> resultRows);

    /**
     * 删除表数据，不含结构
     */
    void deleteData(TableInfo tableInfo);

    /**
     * 包含表结构和数据
     */
    void deleteTable(TableInfo tableInfo);

    void doUpdate(String sql, Object[] args);

    /**
     * 创建表
     */
    boolean createTable(TableInfo tableInfo);

    /**
     * 创建表
     *
     * @param ddl 创建表的语句
     */
    boolean createTable(String ddl);
}
